package com.itbaizhan;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
//可以请求网页资源，也可以请求服务端资源
/*重定向响应*/
/*response.sendRedirect(URL地址)
重定向响应会在响应头中添加一个Location的key对应的value是给定的URL。
客户端浏览器在解析响应头后自动向Location中的URL发送请求。

重定向响应特点：
重定向会产生两次请求两次响应。
重定向的URL是由客户端浏览器发送的。(与之前的servlet没有关系)
浏览器地址栏会有变化。*/

//重定向响应案例
//需求：创建一个搜索页面，通过百度搜索引擎完成内容搜索。
//与Search.html关联使用
public class RedirectServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //产生重定向响应   Redirect:修改方向，重新寄送，再直接的
        //resp.sendRedirect("http://www.itbaizhan.com");

        //设置请求编码
        req.setCharacterEncoding("utf-8");
        //获取用户搜索数据
        String search = req.getParameter("search");
        System.out.println(search);
        //产生重定向响应
        //这输入中文会是乱码 因为现在的百度浏览器是基于get方式提交，当URL
        // 含有汉字，会对URL进行编码
       // resp.sendRedirect("https://www.baidu.com/s?ie=UTF-8&wd="+search);

        //URLEncoder.encode(String s,String x)  s:编码内容（字符串类型）  x:指要编码的格式
        //URLEncoder.encode()  原理：将字符串，转为字节，再编码
        resp.sendRedirect("https://www.baidu.com/s?ie=UTF-8&wd="+ URLEncoder.encode(search,"utf-8"));

    }
}
